#ifndef __THREADPOOL_H__
#define __THREADPOOL_H__
#include "taskqueue.hpp"
#include "task.hpp"
#include <vector>
#include <thread>
class Task;
class threadpool
{
public:
    threadpool(size_t threadNum, size_t queSize);
    ~threadpool();

    // 线程池的启动与停止
    void start();
    void stop();

    // 添加任务与获取任务
    void addTask(Task *ptask);
    Task *getTask();

    // 线程池交给工作线程执行的任务
    void doTask();

private:
    size_t _threadNum;
    vector<thread> _threads;
    size_t _queSize;
    taskqueue _taskQue;
    bool _isExit;
};
#endif